package com.itheima.em.service;

import com.itheima.em.enums.FenceType;
import com.itheima.em.enums.PointType;
import com.itheima.em.pojo.Point;
import com.itheima.em.pojo.TraceFence;
import com.itheima.em.pojo.TraceTerminal;
import com.itheima.em.vo.PageResult;
import com.itheima.em.vo.R;

import java.util.List;
import java.util.Map;

/**
 * 地图标注点相关业务
 */
public interface PointService extends EagleMapService {

    /**
     * 创建标注点
     *
     * @param serverId  服务id
     * @param name      点名称
     * @param desc      描述
     * @param pointType 点类型
     * @param param     参数
     * @return 创建成功，返回点id
     */
    R<Long> createPoint(Long serverId, String name, String desc, PointType pointType,Long groupId,Double lon,Double lat, Map<String, Object> param);


    /**
     * 更新标注点
     *
     * @param serverId  服务id
     * @param pointId   标注点id
     * @param name      围栏名称
     * @param desc      描述
     * @param pointType 点类型
     * @param param     参数
     * @return 创建成功，返回围栏id
     */
    R<String> updatePoint(Long serverId, Long pointId, String name, String desc, PointType pointType,Long groupId,Double lon,Double lat, Map<String, Object> param);

    /**
     * 删除标注点
     *
     * @param serverId 服务id
     * @param pointIds 标注点id
     * @return
     */
    R<String> deletePoint(Long serverId, Long... pointIds);




    //--------------------------------------

    /**
     * 分页查询围栏列表
     * @param pointType 指定点类型
     * @param groupId  指定分组ID
     * @param page     页数
     * @param pageSize 页面大小
     * @return
     */
    R<PageResult<Point>> queryPointList(Long serverId,PointType pointType,Long groupId,Integer page, Integer pageSize);


    /**
     * 根据点id查询标注信息
     *
     * @param serverId 服务id
     * @param pointId  标注点id
     * @return 标注对象数据
     */
    R<Point> queryByPointId(Long serverId, Long pointId);

}
